<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Using Apache with Microsoft Windows</TITLE>
</HEAD>

<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
 BGCOLOR="#FFFFFF"
 TEXT="#000000"
 LINK="#0000FF"
 VLINK="#000080"
 ALINK="#FF0000"
>
<!--#include virtual="header.html" -->

<H1 ALIGN="CENTER">Using Apache With Microsoft Windows</H1>

<p>This document explains how to compile, install, configure and run
   Apache 1.3a1 (or later) under Microsoft Windows. Please note that at
   this time, Windows support is entirely experimental, and is
   recommended only for experienced users. The Apache Group does not
   guarantee that this software will work as documented, or even at
   all. If you find any bugs, or wish to contribute in other ways, please
   use our <a href="http://www.apache.org/bug_report.html">bug reporting
   page.</a></p>

<p><b>Warning: Apache on NT has not yet been optimized for performance.
Apache still performs best, and is most reliable on Unix platforms.  Over
time we will improve NT performance. Folks doing comparative reviews
of webserver performance are asked to compare against Apache
on a Unix platform such as Solaris, FreeBSD, or Linux.</b></p>

<hr>

<ul>
  <li><a href="#req">Requirements</a>
  <li><a href="#down">Downloading Apache for Windows</a>
  <li><a href="#comp">Compiling Apache for Windows</a>
  <li><a href="#inst">Installing Apache for Windows</a>
  <li><a href="#use">Using Apache for Windows</a>
</ul>

<hr>

<h2><a name="req">Requirements</a></h2>

<p>Apache 1.3a1 requires the following:</p>

<ul>
  <li>Microsoft Windows NT 4.0<a href="#351">*</a>, or Windows 95.
  <li>An Intel-based PC-compatible capable of running above OS (exact
      requirements unknown) with a connection to a TCP/IP network.
  <li>Microsoft Visual C++ 5.0 or later.
</ul>

<p><small><a name="351">*</a> Apache may run with Windows NT 3.5.1, but
   has not been tested.</small></p>

<p>Apache 1.3a1 is available only in source form. Future releases will
   contain prebuilt binaries for use by those without compilers (which we
   understand are the vast majority of Windows users), however the
   current release requires Microsoft Visual C++ 5.0 or later. The Apache
   Group is releasing 1.3a1 only as source to limit the alpha release to
   those who have the tools and knowledge to assist with the development
   processes.</p>

<p>This documentation assumes good working knowledge of Microsoft
   Windows, Microsoft Visual C++, and the Apache web server (for
   Unix).</p>

<H2><a name="down">Downloading Apache for Windows</a></H2>

<p>Information on the latest version of Apache can be found on the Apache
web server at <A
HREF="http://www.apache.org/">http://www.apache.org/</A>.  This will
list the current release, any more recent alpha or beta-test release,
together with details of mirror web and anonymous ftp sites.</p>

<p>You will be able to download Apache 1.3a1 or a later release in
   several forms, including a WinZip (<code>.zip</code>)
   archive. Although this contains the same files as the others (likely
   <code>.tar.gz</code> and <code>.tar.Z</code>), it is recommended for
   Windows use, as all the files contained therein will contain Windows
   line breaks. The other archives may contain files with Unix line
   breaks, which will not function on Windows (although they may).</p>

<h2><a name="comp">Compiling Apache for Windows</a></h2>

<p>Compiling Apache requires Microsoft Visual C++ 5.0 to be properly
   installed. It is easiest to compile with the command-line tools
   (nmake, etc...). Consult the VC++ manual to determine how to install
   them.</p>

<p>First, unpack the Apache distribution into an appropriate
   directory. Open a command-line prompt, and change to the
   <code>src</code> subdirectory of the Apache distribution.</p>

<p>The master Apache makefile instructions are contained in the
   <code>Makefile.nt</code> file. To compile Apache, simply use one of
   the following commands:
<ul>
<li><code>nmake /f Makefile.nt apacher</code> (release build)
<li><code>nmake /f Makefile.nt apached</code> (debug build)
</ul>

<p>These will both compile Apache. The latter will include debugging
   information in the resulting files, making it easier to find bugs and
   track down problems.</p>

<p>Apache can also be compiled using VC++'s Visual Studio development
   environment. Although compiling Apache in this manner is not as simple,
   it makes it possible to easily modify the Apache source, or to compile
   Apache if the command-line tools are not installed.</p>

<p>Project files (<code>.DSP</code>) are included for each of the
   portions of Apache. The two projects that are necessary for Apache to
   run are <code>Apache.dsp</code> and <code>ApacheCore.dsp</code>. The
   <code>src\nt</code> subdirectory also contains project files for the
   optional modules (see below).</p>

<h2><a name="inst">Installing Apache for Windows</a></h2>

<p>Once Apache has been compiled, it needs to be installed in its server
   root directory. The hard-coded default is the <code>\Apache</code>
   directory, on the current hard drive. Another directory may be used,
   but the files will need to be installed manually.</p>

<p>To install the files into the </code>\Apache</code> directory
   automatically, use one the following nmake commands (see above):</p>
<ul>
<li><code>nmake /f Makefile.nt installr</code> (for release build)
<li><code>nmake /f Makefile.nt installd</code> (for debug build)
</ul>

<p>This will install the following:</p>

<ul>
  <li><code>\Apache\Apache.exe</code> - Apache executable
  <li><code>\Apache\ApacheCore.dll</code> - Main Apache shared library
  <li><code>\Apache\modules\ApacheModule*.dll</code> - Optional Apache
      modules (7 files)
  <li><code>\Apache\conf</code> - Empty configuration directory
  <li><code>\Apache\logs</code> - Empty logging directory
</ul>

<p>If you do not have nmake, or wish to install in a different directory,
   be sure to use a similar naming scheme.</p>

<h2><a name="use">Using Apache for Windows</a></h2>

<p>The first step is to set up Apache's configuration files. Default
   configuration files for Windows are located in the <code>conf</code>
   subdirectory in the Apache distribution, and are named
   <code>httpd.conf-dist-win</code>, <code>access.conf-dist-win</code>
   and <code>srm.conf-dist-win</code>. Move these into
   <code>\Apache\conf</code>, and rename them <code>httpd.conf</code>,
   <code>access.conf</code> and <code>srm.conf</code>, respectively.</p>

<p>Configuring Apache is nearly identical to the Unix version of Apache,
   so most of the standard <a href="./">Apache documentation</a> is
   applicable. A few things are, however, different, or new:</p>

<ul>
  <li><p>Because Apache for Windows is multithreaded, it does not use a
      separate process for each request, as Apache does with
      Unix. Therefore, the "process"-management directives are different:
      <p><a href="mod/core.html#startservers">StartServers</a> - This
         tells the server how many processes to use. Unlike Unix, there
         will never be more than this number, and only one will be used
         at a time (the others will be held in reserve in case the main
         processes crashes or otherwise dies). The recommended default is
         <code>StartServers 3</code>.
      <p><a
         href="mod/core.html#maxrequestsperchild">MaxRequestsPerChild</a>
         - Like the Unix directive, this controls how many requests a
           process will serve before exiting. However, unlike Unix, a
           process serves all the requests at once, not just one, so if
           this is set, it is recommended that a very high number is
           used. The recommended default, <code>MaxRequestsPerChild
           0</code>, does not cause the process to ever exit.
      <p><a href="mod/core.html#threadsperchild">ThreadsPerChild</a> -
         This directive is new, and tells the server how many threads it
         should use. This is the maximum number of connections the server
         can handle at once; be sure and set this number high enough for
         your site if you get a lot of hits. The recommended default is
         <code>ThreadsPerChild 50</code>.</p>
  <li><p>The directives that accept filenames as arguments now must use
      Windows filenames instead of Unix ones. However, because Apache
      uses Unix-style names internally, you must use forward slashes, not
      backslashes. Drive letters can be used; if omitted, the drive with
      the Apache executable will be assumed.</p>
  <li><p>Apache for Windows contains the ability to load modules at runtime,
      without recompiling the server. If Apache is compiled normally, it
      will install a number of optional modules in the
      <code>\Apache\modules</code> directory. To activate these, or other
      modules, the new <a href="mod/mod_dll.html#loadmodule">LoadModule</a>
      directive must be used. For example, to active the status module,
      use the following (in addition to the status-activating directives
      in <code>access.conf</code>):</p>
<pre>
    LoadModule status_module modules/ApacheModuleStatus.dll
</pre>
      <p>Information on <a href="mod/mod_dll.html#creating">creating module
         DLLs</a> is also available.</p>
  <li><p>Apache can also load ISAPI Extensions (i.e., Internet Server
         Applications), such as those used by Microsoft's IIS, and other
         Windows servers. <a href="mod/mod_isapi.html">More information
         is available.</a>
</ul>

<p>Once Apache is configured correctly, it is nearly ready to be
run. However, we recommend you copy the <code>icons</code> and
<code>htdocs</code> subdirectories from the Apache distribution to
<code>\Apache</code>. The latter is especially important, as it contains
the document root (what the server actually serves).

<p>Apache can be executed in one of two ways, directly from the command
   line, or as a Windows NT service. To run it from the command line, use
   the following command:
<pre>
    C:\Apache> <b>apache -s</b>
</pre>

<p>Apache will then execute, and will remain running until it is
   exited. To use Apache as a Windows NT service, use the following:</p>
<pre>
    C:\Apache> <b>apache -i</b>
</pre>
<p>Then open the Services control panel, and start the Apache service.</p>

<p>If you installed Apache in a server root other than
   <code>\Apache</code>, you must use the <code>-f</code> command-line
   option to specify the httpd.conf file, or the <code>-d</code> option
   to specify the server root.</p>

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
